\subsection{Apache 的安装}
先到\url{http://httpd.apache.org/download.cgi}下载相应版本的Apache HTTP Server，我使用的是2.2.11，下面就以该版本为例。

1. 解压安装文件：
\begin{shaded}
\begin{verbatim}
~$ tar xzvf httpd-2.2.11.tar.gz
\end{verbatim}
\end{shaded}

2. 编译并安装。\texttt{--enable-so}选项是打开Apache的DSO（Dynamic Shared Object）功能，为以后动态添加moudle做准备。同时我修改了默认安装路径。
\begin{shaded}
\begin{verbatim}
~$ cd httpd-2.2.11
~/httpd-2.2.11$ ./configure --enable-so --prefix=/usr/local/apache2
~/httpd-2.2.11$ make
~/httpd-2.2.11$ sudo make install
\end{verbatim}
\end{shaded}

这样就算安装成功了。
\subsection{Apache 的配置}
默认情况下Apache服务是以\texttt{daemon}用户组的身份运行的，所以要先将当前用户加入到\texttt{daemon}组中，这样才有权限去使用HTTP服务。
\begin{shaded}
\begin{verbatim}
~$ sudo usermod -a -G daemon `whoami`
\end{verbatim}
\end{shaded}

然后就是Apache最重要的配置文件了：\texttt{httpd.conf}，这个文件默认保存在\texttt{/usr/local\\/apache2/conf}下。

修改其中的\texttt{DocumentRoot}项为网站的主目录，并替换下面的\texttt{Diretory}项中的\texttt{/usr/local\\/apache2/htdocs}为刚才的主目录，使得具有权限去访问该目录。还可以修改\texttt{ServerName}为\texttt{localhost:80}，否则启动Apache时会有警告提示。

最后通过以下命令启动Apache服务，将\texttt{start}替换为\texttt{stop}可以停止运行Apache，替换为\texttt{restart}可以重启Apache。也可以在\texttt{PATH}变量指定的目录中放一个符号链接，免得每次这么麻烦。
\begin{shaded}
\begin{verbatim}
~$ sudo /usr/local/apache2/bin/apachectl start
\end{verbatim}
\end{shaded}
\subsection{FastCGI 模块的安装与配置}
\textbf{1. FastCGI 模块的安装}

到这里：\url{http://www.fastcgi.com/dist/}下载\texttt{mod\_fastcgi}，我用的是2.4.6版。Apache的模块添加一共有两种方式，一种是编译Apache时同时指定添加的模块，另一种就是DSO动态添加了，不过后者需要Apache编译时添加了\texttt{--enable-so}参数。这里采用的是DSO的方法：
\begin{shaded}
\begin{verbatim}
~$ tar xzvf mod_fastcgi-2.4.6.tar.gz
~$ cd mod_fastcgi-2.4.6
~/mod_fastcgi-2.4.6$ /usr/local/apache2/bin/apxs -o mod_fastcgi.so -c *.c
~/mod_fastcgi-2.4.6$ sudo /usr/local/apache2/bin/apxs -i -a -n fastcgi \
> .libs/mod_fastcgi.so
\end{verbatim}
\end{shaded}

上面的命令执行完以后，会将编译好的\texttt{mod\_fastcgi.so}复制到Apache安装目录下的\texttt{modules}子目录中，并且会自动修改\texttt{httpd.conf}文件，在其中添加下面一行：
\begin{shaded}
\begin{verbatim}
LoadModule fastcgi_module     modules/mod_fastcgi.so
\end{verbatim}
\end{shaded}

但我们还需要再自己添加一些东西进去：
\begin{shaded}
\begin{verbatim}
<IfModule alias_module>
...
    ScriptAlias /fcgi-bin/ "/usr/local/apache2/fcgi-bin"
...
</IfModule>

<IfModule mod_fastcgi.c>
    AddHandler fastcgi-script .fcg .fpl
</IfModule>

<Directory "/usr/local/apache2/fcgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
\end{verbatim}
\end{shaded}

其中那个\texttt{fcgi-bin}文件夹是自己手动建立的。

这个时候是不能运行FastCGI程序的，还需要安装FastCGI Development Kit，因为FastCGI程序运行的时候会用到其中的\texttt{so}文件。

\textbf{2. FastCGI Development Kit 的安装}

这里用的是2.4.0版本，你可以在这里下载：\url{http://www.fastcgi.com/drupal/node/5}。安装步骤很简单，编译三部曲：
\begin{shaded}
\begin{verbatim}
~$ tar xzvf fcgi-2.4.0.tar.gz
~$ cd fcgi-2.4.0
~/fcgi-2.4.0$ ./configure
~/fcgi-2.4.0$ make
~/fcgi-2.4.0$ sudo make install
\end{verbatim}
\end{shaded}

默认的安装路径前缀是\texttt{/usr/local}，安装完成以后，你可以在\texttt{/usr/local/include}下找到相应的头文件，在\texttt{/usr/local/lib}下找到相应的库文件。如果以后编译或者链接的时候找不到相应的文件，记得使用\texttt{-I}或者\texttt{-L}选项来手动指定路径。比如：
\begin{shaded}
\begin{verbatim}
~$ g++ -L/usr/local/lib -lfcgi -o test.fcg test.o
\end{verbatim}
\end{shaded}